﻿using System.Linq;

namespace PESWeb.Services
{
    using System;
    using System.Globalization;
    using PES.Common.BLL;
    using PES.Model;

    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Services" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select Services.svc or Services.svc.cs at the Solution Explorer and start debugging.
    public class Services : IServices
    {
        public Jogador[] GetRank(string _campeonato)
        {
            return CampeonatoBLL.BuscarRankingCampeonato(new Campeonato {ID = int.Parse(_campeonato)}).ToArray();
        }

        public Campeonato[] GetCampeonatos()
        {
            return CampeonatoBLL.BuscarTodosCampeonatos().ToArray();
        }

        public Campeonato[] GetCampeonato(string _campeonato)
        {
            return new[] {CampeonatoBLL.BuscarCampeonato(int.Parse(_campeonato))};
        }

        public Partida[] GetTodasPartidas(string _campeonato, string _dataPartida)
        {
            if (string.IsNullOrEmpty(_dataPartida))
            {
                return string.IsNullOrEmpty(_campeonato)
                           ? new Partida[] {}
                           : PartidaBLL.BuscarTodasPartidas(new Campeonato() {ID = int.Parse(_campeonato)}).ToArray();
            }

            DateTime dataPartida = DateTime.ParseExact(_dataPartida, "yyyy-MM-dd", new CultureInfo("pt-BR"));
            return string.IsNullOrEmpty(_campeonato)
                       ? PartidaBLL.BuscarTodasPartidasDoDia(dataPartida).ToArray()
                       : PartidaBLL.BuscarPartidasDoDia(new Campeonato() {ID = int.Parse(_campeonato)}, dataPartida)
                                   .ToArray();
        }

        public Partida GetPartida(string _partida)
        {
            return PartidaBLL.BuscarPartida(long.Parse(_partida));
        }

        public JogadorVirtual[] GetJogadorVirtual(string _userId)
        {
            return JogadorBLL.BuscarJogadoresVirtuais(new Jogador() {ID = long.Parse(_userId)}).ToArray();
        }
    }
}
